package app.dao;

import java.util.List;

import app.model.Product;
import app.model.ProductPackage;

public interface IProductDAO {

	// property constants
	public static final String NAME = "name";
	public static final String PRODUCT_TYPE = "productType";
	public static final String PRODUCT_DESC = "productDesc";

	public abstract void save(Product transientInstance);
	
	public abstract void savePackage(ProductPackage transientInstance) ;

	public abstract void delete(Product persistentInstance);

	public abstract Product findById(java.lang.Integer id);

	public abstract List findByExample(Product instance);

	public abstract List findByProperty(String propertyName, Object value);

	public abstract List findByName(Object name);

	public abstract List findByProductType(Object productType);

	public abstract List findByProductDesc(Object productDesc);

	public abstract List findAll();

	public abstract Product merge(Product detachedInstance);

	public abstract void attachDirty(Product instance);

	public abstract void attachClean(Product instance);

}